package com.huantai.common.util.regular;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

import com.huantai.common.consts.RegularConst;
import com.huantai.common.util.StringUtil;

/**
 * 数据校验工具类
 * 
 * @author Ma Chao
 * @version 2018年4月4日 下午4:32:04
 */
public final class ValidUtil {
    private ValidUtil() {}

    /**
     * 身份证号码验证
     * 
     * @param str 要验证的数据
     * @return boolean
     */
    public static boolean isIdCardNumber(String str) {
        if (StringUtil.isEmpty(str)) {
            return false;
        }
        return Pattern.matches(RegularConst.IdCardNumberAll.EXPRESSION, str);
    }

    /**
     * 15位身份证号码验证
     * 
     * @param str 要验证的数据
     * @return boolean
     */
    public static boolean isIdCardNumber15(String str) {
        if (StringUtil.isEmpty(str)) {
            return false;
        }
        return Pattern.matches(RegularConst.IdCardNumber15.EXPRESSION, str);
    }

    /**
     * 18位身份证号码验证
     * 
     * @param str 要验证的数据
     * @return boolean
     */
    public static boolean isIdCardNumber18(String str) {
        if (StringUtil.isEmpty(str)) {
            return false;
        }
        return Pattern.matches(RegularConst.IdCardNumber18.EXPRESSION, str);
    }

    /**
     * Email验证
     * 
     * @param str 要验证的数据
     * @return boolean
     */
    public static boolean isEmail(String str) {
        if (StringUtil.isEmpty(str)) {
            return false;
        }
        return Pattern.matches(RegularConst.Email.EXPRESSION, str);
    }

    /**
     * 手机号码验证，只校验1开始的11位数字
     *
     * @param str 要验证的数据
     * @return boolean
     */
    public static boolean isCellphoneNumber(String str) {
        if (StringUtil.isEmpty(str)) {
            return false;
        }
        return Pattern.matches(RegularConst.CellphoneNumber.EXPRESSION, str);
    }

    /**
     * 字符串是否全是汉字
     * 
     * @param str 要验证的数据
     * @return boolean
     */
    public static boolean isChineseString(String str) {
        if (StringUtil.isEmpty(str)) {
            return false;
        }
        Pattern pattern = Pattern.compile(RegularConst.CHINESE_IDEOGRAPH);
        for (char c : str.toCharArray()) {
            Matcher matcher = pattern.matcher(String.valueOf(c));
            if (!matcher.matches()) {
                return false;
            }
        }
        return true;
    }
}
